第 3 章 SIG Mesh 使用说明 ================================ 1、概述 ############ | 遵守蓝牙SIG Mesh协议(链接网址:https://www.bluetooth.com/specifications/specs/),基于蓝牙5 ble实现网内节点间通讯,具体功能如下: | 全节点类型支持(Relay/Proxy/Friend/Low Power); | 支持以PB-GATT方式入网(手机APP配网,支持"nRF Mesh"安卓和苹果最新版本); | 支持以PB-ADV方式入网(“天猫精灵”配网); | 支持设备上电自配网(不用网关就可实现设备在同一网内,支持加密key自定义); | 节点relay/beacon功能可修改; | 节点地址可自定义; | 节点信息断电保存; | 节点发布(Publish)和订阅(Subscribe)地址可修改; | 支持节点Reset为未配网设备; | 支持蓝牙SIG既有Models和用户自定义Vendor Models。 2、工程配置 ############ 代码工程: ``apps\mesh\board\bd19\AC632N_mesh.cbp`` | 代码调用的目录如下: | ▾ mesh/ |     ▾ api/ |         feature_correct.h |         mesh_config_common.c |         model_api.c |         model_api.h |     ▾ board/ |       ▾ bd19/ |           board_ac630x_demo.c |           board_ac630x_demo_cfg.h |           board_ac6311_demo.c |           board_ac6311_demo_cfg.h |           board_ac6313_demo.c |           board_ac6313_demo_cfg.h |           board_ac6318_demo.c |           board_ac6318_demo_cfg.h |           board_ac6319_demo.c |           board_ac6319_demo_cfg.h |           board_config.h |     ▾ examples/ |         generic_onoff_client.c |         generic_onoff_server.c |         vendor_client.c |         vendor_server.c |         AliGenie_SoCket.c 在 ``api/model_api.h`` 下,通过配置CONFIG_MESH_MODEL选择相应例子,SDK提供了5个应用实例。默认选择SIG_MESH_GENERIC_ONOFF_CLIENT,即位于 ``examples/generic_onoff_client.c`` 下的例子。 .. code-block:: c //< Detail in "MshMDLv1.0.1" #define SIG_MESH_GENERIC_ONOFF_CLIENT       0 // examples/generic_onoff_client.c #define SIG_MESH_GENERIC_ONOFF_SERVER       1 // examples/generic_onoff_server.c #define SIG_MESH_VENDOR_CLIENT               2 // examples/vendor_client.c #define SIG_MESH_VENDOR_SERVER               3 // examples/vendor_server.c #define SIG_MESH_ALIGENIE_SoCKET          4 // examples/AliGenie_SoCket.c // more... //< Config which example will use in  #define CONFIG_MESH_MODEL                   SIG_MESH_GENERIC_ONOFF_CLIENT 3、应用实例 ############ **SIG Generic OnOff Client** 简介 <<<<<<<<<< | 该实例通过手机“nRF Mesh”进行配网,操作流程如下所示: | -> 设备名称:OnOff_cli | -> Node Features:Proxy + Relay | -> Authentication方式:NO OOB | -> Elements个数:1 | -> Model:Configuration Server + Generic On Off Client 实际操作 <<<<<<<<<< | **1)基本配置** | 使用USB DP作为串口debug脚,波特率为1000000; | 使用PA3作为AD按键; | 设备名称为“OnOff_cli”,MAC地址为“11:22:33:44:55:66”,操作流程如下所示: | -> api/model_api.h .. code-block:: c #define CONFIG_MESH_MODEL                   SIG_MESH_GENERIC_ONOFF_CLIENT -> board/xxxx/board_xxxx_demo_cfg.h .. code-block:: c #define TCFG_UART0_TX_PORT                   IO_PORT_DP #define TCFG_UART0_BAUDRATE               1000000 #define TCFG_ADKEY_ENABLE               ENABLE_THIS_MOUDLE //是否使能AD按键 #define TCFG_ADKEY_PORT            IO_PORTA_03 //注意选择的IO口是否支持AD功能 #define TCFG_ADKEY_AD_CHANNEL        AD_CH_PA3 -> examples/generic_onoff_client.c .. code-block:: c #define BLE_DEV_NAME             'O', 'n', 'O', 'f', 'f', '_', 'c', 'l', 'i' #define CUR_DEVICE_MAC_ADDR      0x112233445566 对于MAC地址,如果想不同设备在第一次上电时使用随机值,可以按照以下操作,将NULL传入bt_mac_addr_set函数。 | 如果想用配置工具配置MAC地址,应不调用bt_mac_addr_set函数。 | -> examples/generic_onoff_client.c .. code-block:: c void bt_ble_init(void) { u8 bt_addr[6] = {MAC_TO_LITTLE_ENDIAN(CUR_DEVICE_MAC_ADDR)}; bt_mac_addr_set(NULL);      mesh_setup(mesh_init); } **2)编译工程并下载到目标板,接入串口,接入AD按键,上电或者复位设备。** **3)使用手机APP“nRF Mesh”进行配网,详细操作如下所示** | ▾ nRF Mesh | ▾ ADD NODE | ▾ Onoff_cli | ▾ INDETIFY | ▾ INENTIFY | ▾ PROVISION .. admonition:: 注 该动图位于该文档同级目录,如点击无效请手动打开“Generic_On_Off_Client.gif”) 配网完成后节点结构如下: |   ▾ Elements |     ▾ Element |         Configuration Server   #SIG Model ID: 0x0000 |        Generic On Off Client  #SIG Model ID: 0x1001 **4)此时按下按键,就能将开关信息Publish到Group地址0xC000了,如果结合下一小节** | SIG Generic OnOff Server,就能控制这个server设备led灯的亮和灭了。 代码解读 <<<<<<<<<< | .Client运作流程图,如图3.1所示。 .. figure:: ../image/SIG/图片1.png :width: 800 px :align: center 图3.1